import threading

# 创建一个线程局部存储对象
local_data = threading.local()

def worker():
    # 在当前线程中设置数据
    local_data.name = 'worker'
    print(f'当前线程的数据：{local_data.name}')

# 创建一个线程
t = threading.Thread(target=worker)
t.start()
t.join()

# 在主线程中访问数据
try:
    print(local_data)
    print(f'主线程的数据：{local_data.name}')
except AttributeError:
    print('主线程中没有数据')

'''

在这个示例中，我们创建了一个线程局部存储对象 local_data，并在 worker 函数中设置了一个数据 name。
当我们在主线程中访问 local_data.name 时，会抛出一个 AttributeError，因为主线程中没有设置这个数据。
这说明 threading.local 可以帮助我们存储线程私有的数据，避免了线程之间的数据共享问题。
注意：threading.local 对象的属性在不同的线程中是独立的，修改一个线程中的属性不会影响其他线程中的属性

'''